#define _CRT_SECURE_NO_WARNINGS
//
//int removeDuplicates(int* nums, int numsSize) {
//    int right = 1;
//    int left = 0;
//    int drt = 0;
//    while (right < numsSize)
//    {
//        if (nums[right] != nums[left])
//        {
//            nums[drt] = nums[left];
//            right++;
//            left++;
//            drt++;
//        }
//        else
//        {
//            nums[drt] = nums[left];
//            while (nums[left] == nums[right])
//            {
//                right++;
//            }
//
//            drt++;
//            left = right;
//            right++;
//        }
//    }
//    if (left < numsSize)
//
//    {
//        nums[drt] = nums[left];
//    }
//    return drt;
//}
//
//int  main()
//{
//    int arr[] = {1,1,2};
//    removeDuplicates(arr, 3);
//}
//

//#include<stdio.h>
//struct uc {
//	int left;
//	int right;
//}time[101],t;
//int main()
//{
//	int i, n, j;
//	scanf("%d", &n);
//	for (i = 0; i < n; i++)
//	{
//		scanf("%d %d", &time[i].left, &time[i].right);
//	}
//	for (i = 0; i < n-1; i++)
//	{
//		for(j=0;j<n-i-1;j++)
//		{
//			if (time[j].right > time[j + 1].right)
//			{
//				t = time[j];
//				time[j] = time[j + 1];
//				time[j + 1] = t;
//		   }
//		
//		}
//	}
//	int now = time[0].right;
//	int flag = 1;
//	for (i = 1; i < n; i++)
//	{
//		if (time[i].left >= now)
//		{
//			flag++;
//			now = time[i].right;
//		}
//	}
//	printf("%d", flag);
//	return 0;
//}

#include<stdio.h>
#include <stdio.h>
int main()
{
	unsigned int x = 2014;
	int n = 0;
	while (x + 1)
	{
		n++;
		x = x | (x + 1);
	} 
	printf("%d", n);
}